package cn.iocoder.yudao.module.crm.dal.mysql.statistics;

import cn.hutool.core.date.LocalDateTimeUtil;
import cn.hutool.core.util.RandomUtil;
import cn.iocoder.yudao.module.crm.controller.admin.statistics.vo.clue.*;
import cn.iocoder.yudao.module.crm.controller.admin.statistics.vo.customer.CrmStatisticsCustomerReqVO;
import cn.iocoder.yudao.module.crm.controller.admin.statistics.vo.customer.CrmStatisticsFollowUpSummaryByTypeRespVO;
import cn.iocoder.yudao.module.crm.controller.admin.statistics.vo.customer.CrmStatisticsPoolSummaryByDateRespVO;
import cn.iocoder.yudao.module.crm.controller.admin.statistics.vo.customer.CrmStatisticsPoolSummaryByUserRespVO;
import org.apache.ibatis.annotations.Mapper;

import java.time.LocalDateTime;
import java.util.ArrayList;
import java.util.List;

import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.convertList;

/**
 * CRM 线索分析 Mapper
 *
 * @author dhb52
 */
@Mapper
public interface CrmStatisticsClueMapper {

    /**
     * 新建线索数(按日期)
     *
     * @param reqVO 请求参数
     * @return 统计数据
     */
    List<CrmStatisticsClueSummaryByDateRespVO> selectClueCreateCountGroupByDate(CrmStatisticsClueReqVO reqVO);


    /**
     * 转化线索数
     * @param reqVO
     * @since 2024-07-08
     * @author PetePower
     * @return
     */
    List<CrmStatisticsClueSummaryByDateRespVO> selectClueTransCountGroupByDate(CrmStatisticsClueReqVO reqVO);



    /**
     * 新建客户数(按用户)
     *
     * @param reqVO 请求参数
     * @return 统计数据
     */
    List<CrmStatisticsClueSummaryByUserRespVO> selectClueCreateCountGroupByUser(CrmStatisticsClueReqVO reqVO);

    /**
     * 转化线索数(按用户)
     *
     * @param reqVO 请求参数@param reqVO 请求参数@param reqVO 请求参数
     * @return 统计数据
     */
    List<CrmStatisticsClueSummaryByUserRespVO> selectClueTransCountGroupByUser(CrmStatisticsClueReqVO reqVO);


    /**
     * 广告领取线索数(按用户)
     *
     * @param reqVO 请求参数@param reqVO 请求参数@param reqVO 请求参数
     * @return 统计数据
     */
    List<CrmStatisticsClueSummaryByUserRespVO> selectClueAdCountGroupByUser(CrmStatisticsClueReqVO reqVO);



    /**
     * 跟进次数(按日期)
     *
     * @param reqVO 请求参数
     * @return 统计数据
     */
    List<CrmStatisticsFollowUpSummaryByDateRespVO> selectFollowUpRecordCountGroupByDate(CrmStatisticsClueReqVO reqVO);

    /**
     * 跟进客户数(按日期)
     *
     * @param reqVO 请求参数
     * @return 统计数据
     */
    List<CrmStatisticsFollowUpSummaryByDateRespVO> selectFollowUpClueCountGroupByDate(CrmStatisticsClueReqVO reqVO);

    /**
     * 跟进次数(按用户)
     *
     * @param reqVO 请求参数
     * @return 统计数据
     */
    List<CrmStatisticsFollowUpSummaryByUserRespVO> selectFollowUpRecordCountGroupByUser(CrmStatisticsClueReqVO reqVO);

    /**
     * 跟进客户数(按用户)
     *
     * @param reqVO 请求参数
     * @return 统计数据
     */
    List<CrmStatisticsFollowUpSummaryByUserRespVO> selectFollowUpClueCountGroupByUser(CrmStatisticsClueReqVO reqVO);




    /**
     * 跟进次数(按类型)
     *
     * @param reqVO 请求参数
     * @return 统计数据
     */
    List<CrmStatisticsFollowUpSummaryByTypeRespVO> selectFollowUpRecordCountGroupByType(CrmStatisticsClueReqVO reqVO);



    /**
     * 进入公海线索数(按日期)
     *
     * @param reqVO 请求参数
     * @return 统计数据
     */
    List<CrmStatisticsCluePoolSummaryByDateRespVO> selectPoolCluePutCountByDate(CrmStatisticsClueReqVO reqVO);

    /**
     * 公海领取线索数(按日期)
     *
     * @param reqVO 请求参数
     * @return 统计数据
     */
    List<CrmStatisticsCluePoolSummaryByDateRespVO> selectPoolClueTakeCountByDate(CrmStatisticsClueReqVO reqVO);

    /**
     * 进入公海线索数(按用户)
     *
     * @param reqVO 请求参数
     * @return 统计数据
     */
    List<CrmStatisticsCluePoolSummaryByUserRespVO> selectPoolCluePutCountByUser(CrmStatisticsClueReqVO reqVO);

    /**
     * 公海领取线索数(按用户)
     *
     * @param reqVO 请求参数
     * @return 统计数据
     */
    List<CrmStatisticsCluePoolSummaryByUserRespVO> selectPoolClueTakeCountByUser(CrmStatisticsClueReqVO reqVO);



}
